Basic Programming
Variablen definieren
Verwende den Operator <-, um den Variablen bestimmte Werte zuzuweisen:
x <- 5
y <- x + 3 # y = 8
x <- x * 2 # x = 10
Block-Scoping
Innerhalb eines Blocks deklarierte Variablen sind außerhalb des Blocks nicht zugänglich.
Kommentare
Verwende Kommentare, um den Code lesbarer zu machen. Diese werden bei der Ausführung ignoriert:
# This is a comment
// Also a comment
1 + /* this is ignored */ 2 # = 3
Funktionen definieren
Definiere Funktionen in Kurz- oder Langform:
# Short form
addThree(a, b, c) <- a + b + c
# Long form
function addThree(a, b, c)
a + b + c
end function
Default values:
power(a, b = 2) <- a^b
power(3) # = 9
If-Then-Else Statements
Nutze konditionale Logik:
if age > 18 then
"Adult"
else if age > 12 then
"Teen"
else
"Child"
end if
While Loops
Der Code wird wiederholt, solange eine Bedingung erfüllt ist:
n <- 1
while n < 100
n <- n * 2
end loop
# n = 128
For Loops
Der Code wird in einer festgelegte Anzahl ausgeführt:
sum <- 0
for i from 1 to 5
sum <- sum + i
end loop
# sum = 15
Mit benutzerdefinierten Schritten:
for i from 2 to 10 by 2
sum <- sum + i
end loop
# sum = 30
For-in loop:
for val in {3, -1, 7}
print(val)
end loop
Returning Values
Der letzte Ausdruck in einem Block wird zurückgegeben, sofern „return“ nicht explizit verwendet wird:
return 2 + 2 # = 4
Error Handling
Verwende Try-Catch, um Fehler sicher zu behandeln:
Try
result <- someRiskyFunction()
Catch err
result <- "Error occurred"
End Try
Benutzerdefinierte Fehler auslösen:
if x.length() = 0 then
throw "x must not be empty"
end if
Destructuring Assignment
Schnelles Zuweisen von Elementen aus einem Vektor:
a, b <- {100, 200}
# a = 100, b = 200
Funktionale Programmierung
First-Class Funktionen
Weise Variablen Funktionen zu:
myFunc <- mean
myFunc(4, 6, 8) # = 6
Nutze die Map-Funktion mit einem Funktionsvektor, um bestimmte Werte aus einem Datensatz zu erhalten:
{Min, Max}.Map(x(5, 8, 2)) # = {2, 8}
Anonyme Funktionen
Definiere Funktionen ohne Namen:
f <- function(x, y) sqrt(x^2 + y^2)
f(6, 8) # = 10
Hilfreich bei Funktionen wie Map() und Filter():
{1, 2, 3}.map(function(n) n^2) # = {1, 4, 9}
Closures
Hilfreich bei Funktionen wie Map() und Filter():
function makeCounter()
count <- 0
function()
count <- count + 1
count
end function
end function
c <- makeCounter()
c() # = 1
c() # = 2
Object-Oriented Programming (OOP)
Objekte definieren
Objekte sind benannte Vektoren:
Car <- {
make: "Toyota",
year: 2020
}
Car.make # = "Toyota"
Füge Verhaltensregeln zu Funktionen hinzu:
Car.fullInfo <- function()
self.make + " (" + self.year + ")"
end function
Inheritance
Erstellt Objekte, die von anderen erben, mit
Truck <- new Car
Truck.make <- "Ford"
Truck.year <- 2022
Constructors
Füge Verhaltensregeln den Funktionen hinzu:
Car.fullInfo <- function()
self.make + " (" + self.year + ")"
end function
Parent Reference
Use parent to call a parent’s function:
ElectricCar <- new Car("", 0)
ElectricCar.range <- 300
ElectricCar.constructor <- function(m, y, r)
parent.constructor(m, y)
self.range <- r
end function